﻿using System;

namespace Caffeine.Core.Test.TestModel.Merge
{
    public class ModelD : ModelC
    {
        #region IntProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Int32), "IntProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Int32> _IntProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the IntProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Int32> IntProperty1Property
        {
            get { return _IntProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the IntProperty1Property.Value value. This property supports change notification. If the IntProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [IntProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Int32 IntProperty1
        {
            get { return IntProperty1Property.Value; }
            set { IntProperty1Property.Value = value; }
        }

        #endregion

        #region CharProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Char), "CharProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Char> _CharProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the CharProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Char> CharProperty1Property
        {
            get { return _CharProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the CharProperty1Property.Value value. This property supports change notification. If the CharProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [CharProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Char CharProperty1
        {
            get { return CharProperty1Property.Value; }
            set { CharProperty1Property.Value = value; }
        }

        #endregion

        #region DecimalProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Decimal), "DecimalProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Decimal> _DecimalProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the DecimalProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Decimal> DecimalProperty1Property
        {
            get { return _DecimalProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the DecimalProperty1Property.Value value. This property supports change notification. If the DecimalProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [DecimalProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Decimal DecimalProperty1
        {
            get { return DecimalProperty1Property.Value; }
            set { DecimalProperty1Property.Value = value; }
        }

        #endregion

        #region NullableIntProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Nullable<Int32>), "NullableIntProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Nullable<Int32>> _NullableIntProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the NullableIntProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Nullable<Int32>> NullableIntProperty1Property
        {
            get { return _NullableIntProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the NullableIntProperty1Property.Value value. This property supports change notification. If the NullableIntProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [NullableIntProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Nullable<Int32> NullableIntProperty1
        {
            get { return NullableIntProperty1Property.Value; }
            set { NullableIntProperty1Property.Value = value; }
        }

        #endregion

        #region NullableCharProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Nullable<Char>), "NullableCharProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Nullable<Char>> _NullableCharProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the NullableCharProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Nullable<Char>> NullableCharProperty1Property
        {
            get { return _NullableCharProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the NullableCharProperty1Property.Value value. This property supports change notification. If the NullableCharProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [NullableCharProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Nullable<Char> NullableCharProperty1
        {
            get { return NullableCharProperty1Property.Value; }
            set { NullableCharProperty1Property.Value = value; }
        }

        #endregion

        #region ObjectProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Object), "ObjectProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Object> _ObjectProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the ObjectProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Object> ObjectProperty1Property
        {
            get { return _ObjectProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the ObjectProperty1Property.Value value. This property supports change notification. If the ObjectProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [ObjectProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Object ObjectProperty1
        {
            get { return ObjectProperty1Property.Value; }
            set { ObjectProperty1Property.Value = value; }
        }

        #endregion

        #region StringProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(String), "StringProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<String> _StringProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the StringProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<String> StringProperty1Property
        {
            get { return _StringProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the StringProperty1Property.Value value. This property supports change notification. If the StringProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [StringProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual String StringProperty1
        {
            get { return StringProperty1Property.Value; }
            set { StringProperty1Property.Value = value; }
        }

        #endregion

        #region GuidProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Guid), "GuidProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Guid> _GuidProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the GuidProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Guid> GuidProperty1Property
        {
            get { return _GuidProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the GuidProperty1Property.Value value. This property supports change notification. If the GuidProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [GuidProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Guid GuidProperty1
        {
            get { return GuidProperty1Property.Value; }
            set { GuidProperty1Property.Value = value; }
        }

        #endregion

        #region NullableGuidProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Nullable<Guid>), "NullableGuidProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Nullable<Guid>> _NullableGuidProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the NullableGuidProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Nullable<Guid>> NullableGuidProperty1Property
        {
            get { return _NullableGuidProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the NullableGuidProperty1Property.Value value. This property supports change notification. If the NullableGuidProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [NullableGuidProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Nullable<Guid> NullableGuidProperty1
        {
            get { return NullableGuidProperty1Property.Value; }
            set { NullableGuidProperty1Property.Value = value; }
        }

        #endregion

        #region TestEnumProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(TestEnum), "TestEnumProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<TestEnum> _TestEnumProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the TestEnumProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<TestEnum> TestEnumProperty1Property
        {
            get { return _TestEnumProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the TestEnumProperty1Property.Value value. This property supports change notification. If the TestEnumProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [TestEnumProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual TestEnum TestEnumProperty1
        {
            get { return TestEnumProperty1Property.Value; }
            set { TestEnumProperty1Property.Value = value; }
        }

        #endregion

        #region NullableTestEnumProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(Nullable<TestEnum>), "NullableTestEnumProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<Nullable<TestEnum>> _NullableTestEnumProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the NullableTestEnumProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<Nullable<TestEnum>> NullableTestEnumProperty1Property
        {
            get { return _NullableTestEnumProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the NullableTestEnumProperty1Property.Value value. This property supports change notification. If the NullableTestEnumProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [NullableTestEnumProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Nullable<TestEnum> NullableTestEnumProperty1
        {
            get { return NullableTestEnumProperty1Property.Value; }
            set { NullableTestEnumProperty1Property.Value = value; }
        }

        #endregion

        #region ModelCProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(ModelC), "ModelCProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<ModelC> _ModelCProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the ModelCProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<ModelC> ModelCProperty1Property
        {
            get { return _ModelCProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the ModelCProperty1Property.Value value. This property supports change notification. If the ModelCProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [ModelCProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual ModelC ModelCProperty1
        {
            get { return ModelCProperty1Property.Value; }
            set { ModelCProperty1Property.Value = value; }
        }

        #endregion

        #region ModelDProperty1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(ModelD), "ModelDProperty1Property", ModelBase.StandardBehaviors, false, true)]
        protected readonly Caffeine.Core.ModelProperty<ModelD> _ModelDProperty1Property = null; //Will be set by reflection.

        /// <summary>
        /// Gets the ModelDProperty1 backing property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual Caffeine.Core.ModelProperty<ModelD> ModelDProperty1Property
        {
            get { return _ModelDProperty1Property; }
        }

        /// <summary>
        /// Gets or sets the ModelDProperty1Property.Value value. This property supports change notification. If the ModelDProperty1Property.Value value changes,
        /// it will cause a change notification event for this property. This property must follow the [ModelDProperty1Property - "Property"] convention for change events to work correctly.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelProperty Snippet", "1.0")]
        public virtual ModelD ModelDProperty1
        {
            get { return ModelDProperty1Property.Value; }
            set { ModelDProperty1Property.Value = value; }
        }

        #endregion

        #region ModelCCollection1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelCollection Property Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(ModelC), "ModelCCollection1", ModelBase.StandardBehaviors, true, true)]
        protected readonly Caffeine.Core.ModelCollection<ModelC> _ModelCCollection1 = null; //Will be set by reflection.

        /// <summary>
        /// Gets the ModelCCollection1 property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelCollection Property Snippet", "1.0")]
        public virtual Caffeine.Core.ModelCollection<ModelC> ModelCCollection1
        {
            get { return _ModelCCollection1; }
        }

        #endregion

        #region ModelDCollection1 Property (INPC Only)

        [System.CodeDom.Compiler.GeneratedCode("ModelCollection Property Snippet", "1.0")]
        [Caffeine.Core.ModelBackingProperty(typeof(ModelD), "ModelDCollection1", ModelBase.StandardBehaviors, true, true)]
        protected readonly Caffeine.Core.ModelCollection<ModelD> _ModelDCollection1 = null; //Will be set by reflection.

        /// <summary>
        /// Gets the ModelDCollection1 property
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("ModelCollection Property Snippet", "1.0")]
        public virtual Caffeine.Core.ModelCollection<ModelD> ModelDCollection1
        {
            get { return _ModelDCollection1; }
        }

        #endregion
    }
}
